#include "..\CookHeader.h"

int SIZE;
Array <string> stack;
int top = -1;

bool isStackFull() {   //   á Ȯϴ Լ
	if (top >= SIZE - 1)
		return true;
	else
		return false;
}

bool isStackEmpty() {  //   Ȯϴ Լ
	if (top == -1)
		return true;
	else
		return false;
}

void push(string data) {   // ÿ ͸ ϴ Լ
	if (isStackFull()) {
		println("  áϴ.");
		return;
	}
	top++;
	stack[top] = data;
}

string pop() {   // ÿ ͸ ϴ Լ
	if (isStackEmpty()) {
		println(" ϴ.");
		return "None";
	}
	string data = stack[top];
	stack[top] = "None";
	top--;
	return data;
}

string peek() {  // ÿ top ġ ͸ Ȯϴ Լ
	if (isStackEmpty()) {
		println(" ϴ.");
		return "None";
	}
	return stack[top];
}

int main() {
	input(SIZE, " ũ⸦ Էϼ ==> ");
	for (int i = 0; i < SIZE; i++)
		stack.push_back("None");

	char select;
	input(select, "(I)/(E)/Ȯ(V)/(X)  ϳ  ==> ");

	string data;
	while (select != 'X' && select != 'x') {
		switch (select) {
		case 'I':
		case 'i':
			input(data, "Է --> ");
			push(data);
			print("  : ");
			printArray(stack);
			break;
		case 'E':
		case 'e':
			data = pop();
			println(" -->" + data);
			print("  : ");
			printArray(stack);
			break;
		case 'V':
		case 'v':
			data = peek();
			println("top  Ȯ-->" + data);
			printArray(stack);
			break;
		default:
			println("Է ߸");
		}
		input(select, "(I)/(E)/Ȯ(V)/(X)  ϳ  ==> ");
	}
	println("α׷ !");
}